package com.ny.service;

import com.ny.domain.GroupCourseInfoDO;
import com.ny.domain.PersonalTrainerCourseDO;
import com.ny.dto.CourseReservationDTO;
import com.ny.dto.GroupCourseInfoDTO;
import com.ny.dto.PersonalTrainerCourseDTO;
import com.ny.query.GroupCourseInfoQuery;
import com.ny.query.PersonalTrainerCourseQuery;
import com.ny.vo.PrivateCourseVO;

import java.lang.Boolean;
import java.util.List;

/**
 * 课程管理模块
 *
 * @author MSI-NB
 * @date 2025-03-08 13:14:38
 */
public interface CourseService {

    /**
     * 发布私教课程
     *
     * @param personalTrainerCourseDTO 发布私教课程入参
     * @return
     */
    Boolean addPersonalTrainerCourse(PersonalTrainerCourseDTO personalTrainerCourseDTO);

    /**
     * 发布团队课程
     *
     * @param groupCourseInfoDTO 发布团队课程入参
     * @return
     */
    Boolean addGroupCourseInfo(GroupCourseInfoDTO groupCourseInfoDTO);

    /**
     * 查询私教课程
     *
     * @param personalTrainerCourseQuery 查询私教课程入参
     * @return
     */
    List<PrivateCourseVO> getPersonalTrainerCourseInfo(PersonalTrainerCourseQuery personalTrainerCourseQuery);

    /**
     * 查询团队课程
     *
     * @param groupCourseInfoQuery 查询团队课程入参
     * @return
     */
    List<GroupCourseInfoDO> getGroupCourseInfo(GroupCourseInfoQuery groupCourseInfoQuery);

    /**
     * 预约私教课程
     *
     * @param courseReservationDTO 预约课程入参
     * @return
     */
    Boolean reservePersonalTrainerCourse(CourseReservationDTO courseReservationDTO);

    /**
     * 预约团队课程
     *
     * @param courseReservationDTO 预约课程入参
     * @return
     */
    Boolean reserveGroupCourse(CourseReservationDTO courseReservationDTO);

    /**
     * 取消私教课程预约
     *
     * @param courseReservationDTO 预约课程入参
     * @return
     */
    Boolean cancelPersonalTrainerCourseReservation(CourseReservationDTO courseReservationDTO);

    /**
     * 取消团队课程预约
     *
     * @param courseReservationDTO 预约课程入参
     * @return
     */
    Boolean cancelGroupCourseReservation(CourseReservationDTO courseReservationDTO);
}
